package com.simple.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.simple.system.domain.entity.SysRole;
import com.simple.system.domain.vo.SysRoleVo;
import org.apache.ibatis.annotations.Param;

import java.util.Set;


/**
 * @Description 角色表(SysRole)表数据库访问层
 * @Author xiaoke
 * @Date 2024/8/10 18:00
 * @Version 1.0
 */
public interface SysRoleMapper extends BaseMapper<SysRole> {
    /**
     * 根据Id获取角色详情
     * @param id 角色Id
     * @return SysRoleVo
     */
    SysRoleVo findByIdDetails(Long id);

    /**
     * 根据角色名查询角色（包括已经在回收站的）
     * @param name 角色名
     * @return SysRole
     */
    SysRole existRoleName(String name);

    /**
     * 删除某个角色的所有权限
     * @param id 角色Id
     */
    void deleteByIdPerms(Long id);

    /**
     * 批量插入角色权限
     * @param ids 权限集合
     * @param roleId 用户Id
     */
    void insertAllPerms(
            @Param("ids") Set<Long> ids,
            @Param("roleId") Long roleId
    );

    /**
     * 获取角色是否存在
     * @param ids 角色Ids
     * @return 存在的个数
     */
    Integer existRoles(@Param("ids")Set<Long> ids);

    /**
     * 获取某个角色下所有用户Id
     * @param roleIds 角色Ids
     * @return 用户Id集合
     */
    Set<Long> selectByRoleIdsUserIds(Set<Long> roleIds);

}

